package leetcode.editor.cn;

//[231]2 的幂
public class PowerOfTwo231 {
    public static void main(String[] args) {
        Solution solution = new PowerOfTwo231().new Solution();

    }

    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        //一个数 n 是 2 的幂，当且仅当 n 是正整数，
        // 并且 n 的二进制表示中仅包含 1 个 1。  【1】个
        //执行耗时:0 ms,击败了100.00% 的Java用户
        //	内存消耗:39.7 MB,击败了82.06% 的Java用户
        public boolean isPowerOfTwo0(int n) {
            int cout = 0;
            while (n != 0) {
                if (cout > 1) return false;
                if ((n & 1) == 1) {
                    cout++;
                }
                n = n >> 1;
            }
            return cout == 1;
        }

        public boolean isPowerOfTwo(int n) {

            if (n < 0) return false;
//            int cout = 0;
//            while (n != 0) {
//                cout++;
//                n = n & (n - 1);
//            }
//            return cout == 1;

            return (n & (n-1)) == 0;//清零最低位 1 ， 因为只有 1 为所以 ==0
        }
    }
//leetcode submit region end(Prohibit modification and deletion)

}